package com.zzl.java8.lambda1;

import org.junit.jupiter.api.Test;

import java.util.*;
import java.util.stream.Collectors;

/**
 * description: lambda表达式
 * @author 朱正磊
 * @date 2021-11-06 10:52:46
 */
public class LambdaTest2 {

    /**
     * description: 测试Map
     * @author 朱正磊
     * @date 2021-11-06 10:54:02
     */
    @Test
    void test1() {
        Map<String, Integer> map = new HashMap<>();
        map.put("会员编号", 10);
        Integer memberNoCount = map.get("会员编号");
        // 会员编号个数 = 10
        System.out.println("会员编号个数 = " + memberNoCount);
    }

    /**
     * description: 使用stream().distinct()方式实现对List元素的去重处理
     * @author 朱正磊
     * @date 2021-11-06 11:05:38
     */
    @Test
    void test2() {
        List<String> list = new ArrayList<>();
        list.add("A");
        list.add("B");
        list.add("B");
        List<String> collect = list.stream().distinct().collect(Collectors.toList());
        // A
        // B
        collect.forEach(System.out::println);
    }

    /**
     * description: 获取集合中的最大元素和最小元素（采用Collections工具类的静态方法）
     * @author 朱正磊
     * @date 2021-12-14 13:56:27
     */
    @Test
    void test3() {
        List<String> list = new ArrayList<>();
        list.add("SYG-VIP-00000003");
        list.add("SYG-VIP-00000006");
        list.add("SYG-VIP-00000009");
        list.add("SYG-VIP-00000002");
        list.add("SYG-VIP-00000008");
        list.add("SYG-VIP-00000001");
        // 最大值: SYG-VIP-00000009
        System.out.println("最大值: " + Collections.max(list));
        // 最小值: SYG-VIP-00000001
        System.out.println("最小值: " + Collections.min(list));
    }

    /**
     * description: 获取集合中的最大元素和最小元素（采用stream流提供的方法）
     * @author 朱正磊
     * @date 2021-12-14 13:56:27
     */
    @Test
    void test4() {
        List<String> list = new ArrayList<>();
        list.add("SYG-VIP-00000003");
        list.add("SYG-VIP-00000006");
        list.add("SYG-VIP-00000009");
        list.add("SYG-VIP-00000002");
        list.add("SYG-VIP-00000008");
        list.add("SYG-VIP-00000001");
        String max = list.stream().max(Comparator.comparing(String::valueOf)).orElse("");
        // max = SYG-VIP-00000009
        System.out.println("max = " + max);
        String min = list.stream().min(Comparator.comparing(String::valueOf)).orElse("");
        // min = SYG-VIP-00000001
        System.out.println("min = " + min);
    }

}
